#include <iostream>
#include <cstring>
using namespace std;
const int N=110;

int arr[N];
int n;
bool dfs(int u,int depth)
{
	if(u>depth)
		return false;
	if(arr[u-1]==n)
		return true;
	int st[N*2]={0};	
	for(int i=u-1;i>=0;i--)
	{
		for(int j=i;j>=0;j--)
		{
			int s=arr[i]+arr[j];
			if(st[s] || s<=arr[u-1] || s>n)
				continue;
			st[s]=1;
			arr[u]=s;
			if(dfs(u+1,depth))
				return true;
		}
	}
	return false;
}
int main()
{
	while(cin>>n,n)
	{
		arr[0]=1;
		int depth=1;
		while(!dfs(1,depth))
		{
			depth++;
		}
		for(int i=0;i<depth;i++)
		{
			cout<<arr[i]<<' ';
		}
		cout<<endl;
	}
	return 0;
}
